#ifndef SHELL_H_
#define SHELL_H_

#include <stdlib.h>
#include <stdio.h>
#include "Token.h"
#include "Rule.h"
#include "Command.h"
#include "PipedCommand.h"

#include <fstream>
#include <iostream>
#include <sstream>

using namespace std;
using std::ifstream;
using std::ofstream;

class Shell {
private:
	ifstream	ifs;
	ofstream	ofs;
	Rule * 		currentRule;
	vector<Token*>* tokens;

	bool running;
	bool newLine;
	bool hasInput;


public:
	Shell();
	virtual ~Shell();
	void parseTokens();
	void buildCommands();
	void executeCommands();
	void addEOL(Token *);
	void run();

};

#endif /* SHELL_H_ */
